翻訳と辞書
Words near each other
・ Paisy-Cosdon
・ Paita
・ Paita District
・ Paita Province
・ Paitanic languages
・ Paitchau
・ Paite
・ Paite language
・ Paite people
・ Paitela Kelemene
・ Paiter people
・ Paithalmala
・ Pairing
・ Pairing (computing)
・ Pairing function
Pairing heap
・ Pairing Off
・ Pairing-based cryptography
・ Pairis Abbey
・ Pairoj Borwonwatanadilok
・ Pairote Pongjan
・ Pairote Sokam
・ PAIRS Foundation
・ Pairs in Test and first-class cricket
・ Pairs trade
・ Pairwise
・ Pairwise Algorithm
・ Pairwise comparison
・ Pairwise error probability
・ Pairwise independence


Dictionary Lists
翻訳と辞書 辞書検索 [ 開発暫定版 ]
スポンサード リンク

Pairing heap : ウィキペディア英語版
Pairing heap

A pairing heap is a type of heap data structure with relatively simple implementation and excellent practical amortized performance, introduced by Michael Fredman, Robert Sedgewick, Daniel Sleator, and Robert Tarjan in 1986.
Pairing heaps are heap-ordered multiway tree structures, and can be considered simplified Fibonacci heaps. They are considered a "robust choice" for implementing such algorithms as Prim's MST algorithm, and support the following operations (assuming a min-heap):
* ''find-min'': simply return the top element of the heap.
* ''merge'': compare the two root elements, the smaller remains the root of the result, the larger element and its subtree is appended as a child of this root.
* ''insert'': create a new heap for the inserted element and ''merge'' into the original heap.
* ''decrease-key'' (optional): remove the subtree rooted at the key to be decreased, replace the key with a smaller key, then ''merge'' the result back into the heap.
* ''delete-min'': remove the root and ''merge'' its subtrees. Various strategies are employed.
The analysis of pairing heaps' time complexity was initially inspired by that of splay trees.〔
The amortized time per ''delete-min'' is , and the operations ''find-min'', ''merge'', and ''insert'' run in amortized time.
Determining the precise asymptotic running time of pairing heaps when a ''decrease-key'' operation is needed has turned out to be difficult. Initially, the time complexity of this operation was conjectured on empirical grounds to be ,〔
but Fredman proved that the amortized time per ''decrease-key'' is at least \Omega(\log\log n) for some sequences of operations.
Using a different amortization argument, Pettie then proved that ''insert'', ''meld'', and ''decrease-key'' all run in O(2^{2\sqrt{\log\log n}}) amortized time, which is o(\log n).
Elmasry later introduced a variant of pairing heaps for which ''decrease-key'' runs in O(\log \log n) amortized time and with all other operations matching Fibonacci heaps,
but no tight \Theta(\log\log n) bound is known for the original data structure.〔〔 Moreover, it is an open question whether a o(\log n) amortized time bound for ''decrease-key'' and a O(1) amortized time bound for ''insert'' can be achieved simultaneously.〔
Although this is worse than other priority queue algorithms such as Fibonacci heaps, which perform ''decrease-key'' in O(1) amortized time, the performance in practice is excellent. Stasko and Vitter,
Moret and Shapiro,
and Larkin, Sen, and Tarjan
conducted experiments on pairing heaps and other heap data structures. They concluded that pairing heaps are often faster in practice than array-based binary heaps and d-ary heaps, and almost always faster in practice than other pointer-based heaps, including data structures like Fibonacci heaps that are theoretically more efficient.
==Structure==

A pairing heap is either an empty heap, or a pair consisting of a root element and a possibly empty list of pairing heaps. The heap ordering property requires that all the root elements of the subheaps in the list are not smaller than the root element of the heap. The following description assumes a purely functional heap that does not support the ''decrease-key'' operation.
type PairingHeap() = Empty | Heap(elem: Elem, subheaps: List[PairingHeap[Elem]])
A pointer-based implementation for RAM machines, supporting ''decrease-key'', can be achieved using three pointers per node, by representing the children of a node by a " TITLE="singly-linked list: a pointer to the node's first child, one to its next sibling, and one to the parent. Alternatively, the parent pointer can be omitted by letting the last child point back to the parent, if a single boolean flag is added to indicate "end of list". This achieves a more compact structure at the expense of a constant overhead factor per operation.〔
">singly-linked list: a pointer to the node's first child, one to its next sibling, and one to the parent. Alternatively, the parent pointer can be omitted by letting the last child point back to the parent, if a single boolean flag is added to indicate "end of list". This achieves a more compact structure at the expense of a constant overhead factor per operation.〔

抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)
ウィキペディアで「Pairing heap」の詳細全文を読む



スポンサード リンク
翻訳と辞書 : 翻訳のためのインターネットリソース

Copyright(C) kotoba.ne.jp 1997-2016. All Rights Reserved.